package com.maiko.usercenter.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;

/**
 * 用户账户注册请求体 DTO
 * <p>
 * 该类用于接收用户注册时提交的相关信息，包括账号、密码、确认密码等字段，
 * 通过注解实现字段校验，保证数据有效性。
 * </p>
 *
 * @author Maiko7
 * @create 2025-07-13 14:44
 */
@Data
@Schema(description = "用户账户注册请求体")
public class UserAccountRegisterRequest implements Serializable {

    private static final long serialVersionUID = -1L;

    /**
     * 用户账号，注册时的唯一登录标识
     * 非空校验，不能为空字符串
     */
    @Schema(description = "用户账号", example = "maiko7")
//    @NotBlank(message = "账号不能为空")
    private String account;

    /**
     * 用户密码，明文传入，长度限制6-16位
     * 非空且长度校验
     */
    @Schema(description = "用户密码", example = "123456")
//    @NotBlank(message = "密码不能为空")
//    @Size(min = 6, max = 16, message = "密码长度应在6~16位之间")
    private String password;

    /**
     * 确认密码，确保用户输入密码一致
     * 非空校验
     */
    @Schema(description = "确认密码", example = "123456")
//    @NotBlank(message = "确认密码不能为空")
    private String checkPassword;

    /**
     * 用户手机号，符合中国大陆手机号码格式
     * 非空校验和正则格式校验
     */
    @Schema(description = "用户手机号", example = "13888888888")
//    @NotBlank(message = "手机号不能为空")
//    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式错误")
    private String phone;

    /**
     * 用户邮箱，符合邮箱格式
     * 非空校验和邮箱格式校验
     */
    @Schema(description = "用户邮箱", example = "maiko7@gmail.com")
//    @NotBlank(message = "邮箱不能为空")
//    @Email(message = "邮箱格式错误")
    private String email;

    /**
     * 性别，建议使用枚举，前端传入对应整型值
     * 非空校验
     */
    @Schema(description = "性别，1-男，2-女", example = "1")
//    @NotBlank(message = "性别不能为空")
    private Integer gender;
//
//    /**
//     * 用户昵称，可选字段
//     */
//    private String username;
//
//    /**
//     * 用户头像地址，可选字段
//     */
//    private String avatar;
}
